/**
 * @file jwt 工具类
 * @version 1.0.0
 * @author qingxue
 * @createDate 2024-04-06 20:00
 * @updateDate 2024-04-06 20:00
 */

const jwt = require('jsonwebtoken');
const uuid = require('uuid');
const tokenConfig = require('@/config/base.config').security.token;

const key = uuid.v1();

/**
 * 产生 token 的方法
 * @param load 数据
 * @returns {*} token
 */
function sign(load) {
  let payload = { data: load }; // 负载
  let expiresIn = { expiresIn: tokenConfig.expire }; // 有效期
  // 生成 token
  return jwt.sign(payload, key, expiresIn);
}

/**
 * 验证 token
 * 如果 token不合法，jwt.verify(token, key) 会报错
 * @param token token
 * @returns {boolean|*} data
 */
function verify(token) {
  try {
    // 验证 token
    return jwt.verify(token, key).data;
  } catch (error) {
    return false;
  }
}

module.exports = { sign, verify };
